Methods and systems for print-processor-based printer status detection and print task distribution

ABSTRACT

Embodiments of the present invention comprise methods and systems which enable a user to detect the status of printing devices without the use of additional hardware or application program modification for this purpose. These systems and methods are typically used in conjunction with a computer network comprising at least one computing device and a plurality of printing devices. When a print task is sent for printing it will activate a print processor for interpreting the print task. In addition to a print processor&#39;s interpretation function, the print processors of the present invention may detect the status of printing devices. Some embodiments may use this information to redirect or otherwise modify a print task for improved printing performance.

CROSS REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of Provisional ApplicationSerial No. 60/261,132, entitled “Methods and Systems for Print-ProcessorModified Printing” filed Jan. 11, 2001 by inventors Ferlitsch et al.This application further claims the benefit of U.S. Patent ApplicationSerial No. 09/681,208, entitled “Methods and Systems for Print-ProcessorModified Printing” filed Feb. 22, 2001 by inventors Ferlitsch et al.

BACKGROUND OF INVENTION

[0002] Embodiments of the present invention relate to methods andsystems for detecting printing devices and distributing print tasks toprinters in a network. More particularly, these embodiments relate tomethods and systems for detecting printer status and distributing printtasks in a network cluster printing environment through the use of novelprint-processor-based applications. These embodiments provide increasedprint system performance and avoid failed print tasks without the use ofadditional hardware.

[0003] Many offices can generate a high volume of printer output orrequire high print rates to meet deadlines. When these needs are fairlyconstant, large, high-production printers and associated hardware may berequired. These high-production units are expensive to procure andmaintain and, generally, are only made economically feasible by aconstant high demand for printer output. When printer requirementsfluctuate, the costs of these high-production printers are difficult tojustify. However, when sporadic, high printer throughput is a necessity,some offices are forced to bear the costs of expensive printer equipmentthat runs at well below its capacity most of the time.

[0004] Cluster printing has been introduced to avoid this problem.Cluster printing involves the use of multiple printers in a network.With cluster printing, print jobs can be sent to a multiple printernetwork with a capacity that rivals the capacity of expensive,high-throughput equipment. Generally, this network is comprised ofmultiple lower-production printers that may already exist in an officeenvironment making the cost of the network very manageable.

[0005] Through the use of cluster printing, a user may choose to split asingle print job among several printers to increase print job speed anddecrease print time. Print jobs that include multiple copies may bedivided so that each printer in a network prints some of the copies.Other variations of print job distribution may also be implemented.

[0006] Cluster printing may be implemented through specialized printerswhich contain cluster-enabling firmware. When these printers areinterconnected via cables, they can share printing jobs. In some cases,the marking engines are connected to enable division of printing tasksbetween the connected printers.

[0007] Other methods of implementing cluster printing functions requirethe use of additional hardware or application software. Typically, aspecialized print server is used. This server is generally ahigh-performance general purpose computer to which print jobs aredirected by the network. Specialized software on the server allows printjobs or copies thereof to be distributed among multiple printers thatare managed by the server.

[0008] These known cluster printing implementations require specializedprinter or server hardware or software to provide cluster printingfunctions.

[0009] Another problem that exists in single printer, cluster printing,network printing and other environments is that of printer statusdetection. When a print job is initiated, a user typically selects aprinter or printers based on the printers' location and/or capabilities.However, if one or more selected printers are offline, in an errorstate, busy, or for some other reason, unavailable, the print job maynot be completed in an acceptable time period or may not be completed atall. Typically, an error message is returned to the user who must thenselect another printer or correct the problem preventing the selectedprinter from functioning. In some network printing cases involving printqueues, no error message is returned and the user is left unaware of theprinting problem. When a print job is time sensitive this process can befrustrating causing missed deadlines and tarnished reputations.

[0010] Printer status detection can be especially important in clusterprinting environments where print tasks are divided among severalprinting devices. When a user or the user's computing device is notaware of the status of the printing devices selected for printing, aprint task or portions thereof can be delayed, interrupted or lost.

SUMMARY OF INVENTION

[0011] Embodiments of the present invention comprise methods and systemswhich enable a user to detect printer status and distribute print tasksto a plurality of printing devices without the use of additionalhardware or server software for this purpose. These systems and methodsare typically used in conjunction with a computer network comprising atleast one computing device and a plurality of printing devices. Printingtasks which are typically sent to a user-selected printing device may bedistributed to available printing devices to increase printing speed,volume and/or capacity. This printer status detection, availabilitydetermination and distribution capability can be achieved without theuse of additional hardware and firmware and without modification tosoftware applications.

[0012] Embodiments of the present invention comprise a novel printprocessor which is capable of detecting the status of printing devices.This detection may take place when a print task is sent to the printprocessor, prior to print task transmission, during the printing processor at some other time. Typically, printing device status is detected atthe time a print task is sent to the print processor. If a print task isinitially directed to a printing device that is unavailable or otherwiseunable to function for the current task, the print processor of thepresent invention may redirect the print task to another printing devicethat is available for use.

[0013] In some cluster printing embodiments, the printing device statusmay be used to determine cluster printing parameters. For example, andnot by way of limitation, a print task may be divided among the maximumnumber of available printing devices as determined by the statusdetection of embodiments of the present invention. As anothernon-limiting example, a print task may be divided among the maximumnumber of available printers within a given distance to a user. Otherembodiments may use printing device status information to customizethese and other cluster printing parameters.

BRIEF DESCRIPTION OF DRAWINGS

[0014] In order that the manner in which the above-recited and otheradvantages and objects of the invention are obtained, a more particulardescription of the invention briefly described above will be rendered byreference to specific embodiments thereof which are illustrated in theappended drawings. Understanding that these drawings depict only typicalembodiments of the invention and are not therefore to be considered tobe limiting of its scope, the invention will be described and explainedwith additional specificity and detail through the use of theaccompanying drawings in which:

[0015]FIG. 1 is a diagram showing an embodiment of the present inventioncomprising printer availability detection for a local printer;

[0016]FIG. 2 is a diagram showing an embodiment of the present inventioncomprising printer availability detection for networked printers;

[0017]FIG. 3 is a diagram showing an embodiment of the present inventioncomprising printer availability detection for remote printers;

[0018]FIG. 4 is a diagram showing an embodiment of the present inventionwherein printer availability is detected;

[0019]FIG. 5 is a diagram showing an embodiment of the present inventioncomprising printing device detection and a user selection interface;

[0020]FIG. 6 is a diagram showing an embodiment of the present inventioncomprising printing device detection and task rollover;

[0021]FIG. 7 is a diagram showing an embodiment of the present inventioncomprising printing device detection and rollover to available or busydevices;

[0022]FIG. 8 is a diagram showing an embodiment of the present inventioncomprising printing device detection and device group management; and

[0023]FIG. 9 is a diagram showing an embodiment of the present inventioncomprising printing device detection and preferred and backup groupmanagement

DETAILED DESCRIPTION

[0024] The figures listed above are expressly incorporated as part ofthis detailed description. It will be readily understood that thecomponents of the present invention, as generally described andillustrated in the figures herein, could be arranged and designed in awide variety of different configurations. Thus, the following moredetailed description of the embodiments of the systems and methods ofthe present invention, as represented in FIGS. 1 through 5 is notintended to limit the scope of the invention, as claimed, but it ismerely representative of the presently preferred embodiments of theinvention. The currently preferred embodiments of the present inventionwill be best understood by reference to the drawings, wherein like partsare designated by like numerals throughout.

[0025] The definitions in this and subsequent paragraphs applythroughout this specification and related claims. The term “print job”may refer to any combination of data that can be printed. A print jobmay comprise text and/or graphics and may comprise part of a page, asingle page or many pages. Print jobs may be rendered or unrendered.Generally, a print job is generated by an application, such as a wordprocessor, spread sheet, etc., however, a print job may also comprise afile or data in memory that may be sent directly to a print process.

[0026] The term “print copy” or “copy” may refer to data, code orcommands which generate a single printing device output of a print jobor may refer to the actual hard copy output of the print job.

[0027] The term “print task” may comprise any combination of print jobsand copies thereof. A print task may comprise one or more print jobs andone or more copies of each print job.

[0028] The term “copy splitting” may refer to a process by which a printtask comprising multiple copies is divided into multiple modified printtasks with each modified print task comprising a portion of the totalnumber of copies.

[0029] The term “job splitting” may refer to a process by which a printtask comprising at least one print job is split into multiple modifiedprint tasks with each modified print task comprising a portion of aprint job.

[0030] References to a Microsoft Windows® or Windows® operating systemmay refer to any version or variation of a Microsoft Windows® operatingsystem comprising Windows 95®, Windows 98®, Windows NT®, Windows 2000®,Windows ME®, Windows XP® and others. While exemplary embodiments of thepresent invention may be directed to a Windows® operating system andenvironment, systems and methods directed to other operating systemssuch as Macintosh®, UNIX, DOS, Linux, MVS and others are to becontemplated within the scope of the present invention.

[0031] Embodiments of the present invention may be embodied in software,firmware, hardware and other forms that achieve the function describedherein. As embodiments of the present invention may be adapted to manyenvironments with varying computing devices, operating systems, printingdevices, network hardware and software, applications and othervariables, these embodiments may take many forms to achieve theirfunction. Some embodiments may also be transmitted as signals, forexample, and not by way of limitation, embodiments may be transmitted asanalog or digital electrical signals or as light in a fiber-optic line.All of these embodiments are to be considered within the scope of thepresent invention.

[0032] Embodiments of the present invention may be used to achieveprinting device status detection and analysis, print task modification,copy splitting, job splitting and various combinations of these conceptsalong with related distribution tasks that allow modified or unmodifiedprint tasks to be distributed to one or more printing devices. In someembodiments, printer status is detected and analyzed to determine aprint task destination or modified print task destination. In otherembodiments, printer status and printer capabilities may be used tomodify a print task to print on a specific printer.

[0033] Some embodiments of the present invention may detect the statusof a local printing device. A local printing device is a printing devicethat is directly connected to a communications port on a computingdevice and which is being used by a user of that computing device. Forexample, and not by way of limitation, a printer connected to a USBport, a parallel port or a serial port on a desktop computer is a localprinter when it is being used by that computer. When a local printer isused, as shown in FIG. 1, a status detecting print processor (SDPP) 10of the present invention may be used to detect the status of the localprinter. This may be done by querying a port manager 12 which can accessinformation about the devices connected to the various ports on acomputer. The port manager 14 can communicate with the devices connectedto its ports and determine their status. In some cases, a bidirectionalcommunication 16 may be established between a port manager 12 and aprinting device 14. This communication is generally carried out using aprinting or communication protocol. Using this protocol or a similarprocess, a printing device status may be determined by the port manager12 and communicated back to the MPP 10. In this way, a port manager maytypically determine printing device status such as conditions where aprinting device is offline, busy, ready to print, or in an error state.Other status conditions may also be determined according to thecapabilities and limitations of the port manager,printing/communications protocol, printing device, operating system andother factors. Depending on these factors, an estimated time to currentjob completion, printer speeds (i.e., ppm) particular error statedetails and other status details may also be determined.

[0034] Embodiments of the present invention may also be used to detectprinting device status on network printing devices. This may be done inseveral ways. Some of these methods are described in reference to FIG.2. A status detecting print processor (SDPP) 20 may communicate with aport manager 22 and access information regarding devices connected toits ports. In a network environment, a port manager 22 may communicatewith a print server 26 and obtain information about a network printqueue 28. A port manager 22 may use an application program interface(API) to communicate with the print server 26 and obtain network queue28 information. As a non-limiting example, in a Microsoft Windows®environment the “(GetPrinter)” call may be used to obtain printer queue28 information. Printer queue 28 information may comprise the number ofprint jobs in the queue which may be used to determine if the associatedprinter 24 is busy or idle.

[0035] A SDPP 20 may communicate directly with a network printer 24 bypinging 30 the printer 24 to determine its status. If a printer 24responds to the ping 30, the SDPP may determine that the printer 24 isonline in a ready to print or busy state or offline in an error state(off.errorstate). If a printer 24 does not respond to a ping 30, theSDPP may determine that the printer 24 is offline.

[0036] Some embodiments of the present invention may also comprise aSDPP 20 which employs a communication protocol 32 to communicatedirectly with a network printing device 24. A SDPP 20 may use the SimpleNetwork Management Protocol (SNMP) to send protocol data units (PDUs) tonetwork devices and gather information from device ManagementInformation Bases (MIBs) to determine device status. Using thistechnique, a SDPP 20 may determine if a printing device is offline,busy, ready to print, in an error state and other status information.When a printing device 24 is busy, more detail can be obtained such asprint job identification, job size, estimated time to completion andother details. When a printing device 24 is ready, more detail may alsobe obtained such as whether the printing device 24 is idle (cool) orwarm. A newer remote monitoring protocol (RMON) may also be used todetermine printing device status. RMON embodiments utilize additionalMIBs beyond those established for SNMP protocols. In addition toprinting device information, RMON embodiments may also gather networktraffic data to further refine a device's status. Other embodiment maycomprise an Internet Printing Protocol (IPP) and HTTP servers.

[0037] Embodiments of the present invention may also detect the statusof remote printing devices as shown in FIG. 3. Remote printing devices44 may be connected to a computing device at a location that is notdirectly connected to the computing device and that is not directlyconnected to the network of the computing device. These printing devicesare generally connected through an internet connection via an IP address46.

[0038] The status of remote printing devices 44 may be detected bymethods similar to those used for network printing devices. A SDPP 40may ping 48 a remote printing device 44 directly via its IP address 46and determine a ready or offline status based on a response or lack ofresponse, respectively. A SDPP 40 may also utilize communicationsprotocols 50 such as SNMP and RMON to communicate directly with aprinting device 44 and access status information contained in thedevice's MIBs. These communications protocol methods may be used todetermine if a printing device is offline, busy, ready to print, in anerror state or other status information. When a printing device 44 isbusy, more detail can be obtained such as print job identification, jobsize, estimated time to completion and other details. When a printingdevice 44 is ready, more detail may also be obtained such as whether theprinting device 24 is idle (cool) or warm.

[0039] A SDPP 40 may also communicate 52 with a remote printing device44 through a port manager 42. Through the port manager 42, an API may beused to communicate with the remote printing device 44 and ascertain thestatus of the printing device. In some embodiments, a Graphical DeviceInterface (GDI) API may be used to determine printing device status.

[0040] Some embodiments of the present invention, as showndiagrammatically in FIG. 4, enable a computing device to detect thestatus of printing devices and direct a print task according to deviceavailability. Typically, a print task is initiated 60 from anapplication program, an operating system command or some other method.This initial procedure generally activates a print driver which mayallow a user to select a print destination and format. A user generallyselects a destination device that is appropriate for the desired task.The capabilities and limitations of this selected destination device maybe used by these embodiments to determine compatible devices parameters.

[0041] Once the task is defined by the driver, it may create a printtask spool file which is sent to a spooler. The spooler, then, sends theprint task to a print processor for interpretation. In these embodimentsof the present invention, the print processor may detect 62 the statusof printing devices to determine their availability and capacity toperform a print task. When an available printing device is detected, theprint processor may direct 64 the print task to the available device.

[0042] This device to which the task is directed may be the deviceinitially selected by a user, or another device selected by the printprocessor according to availability or some other parameter. Theinitially selected device may also be a virtual device.

[0043] Embodiments of the present invention may switch or redirect tasksbetween any printing devices that are compatible. Printing devices, suchas printers, are generally compatible when they share the same PageDescription Language (PDL) and have marking engines that share a similargeometric format. Other types of printing devices may be compatible whenthey share the same driver or description language.

[0044] Other embodiments of the present invention may employ a userinterface to prompt for user selection of available devices as shown inFIG. 5. In these embodiments, a print task is initiated 70 and the taskis transmitted through the necessary drivers, spoolers and otherprocesses until it arrives at a print processor. The print processor,then, checks 72 the status of printing devices in communication with itand compiles a list of available printing devices. This list ofavailable devices is presented 74 to a user and the user is prompted tomake a selection among the available devices. Any form of user interfacemay be used to prompt the user, such as a dialog box, checkbox list orsome other selection interface. The user selects 76 a preferred devicein the case of a single device task or, in the case of a clusterprinting task, a user may select a group of available devices. Once adevice or devices has been selected, the print processor of the presentinvention directs 78 the print task to the selected printing device ordevices.

[0045] Further embodiments of the present invention may be used toaccomplish a print task rollover process as illustrated in FIG. 6. Aprint rollover process is used to prevent print task delays when adefault or preferred printer or printers are busy, offline or otherwiseunavailable or unusable. In the print rollover process, a user generallyselects a default printing device 80 which may be stored according tomany known methods. A user then initiates a print task 82. This can bedone in a variety of ways including, but not limited to, selecting aprint option in an application, running a batch file and others. Oncethe print task is initiated 82, or during initiation, a print driver istypically used to create a spool file that is sent to a spooler forspooling to a print processor. In embodiments of the present invention,the print processor is a SDPP which checks the status 84 of printingdevices that are in communication with the SDPP. These may be local,network or remote printing devices. Among these printing devices is thedefault printing device previously selected 80. The SDPP of theseembodiments checks the status of the default printing device 84 anddetermines its availability. When the default printer is available 86,the print job is sent to the default printer 88 through typical printingchannels. Once the print job has been sent, the SDPP or related code maynotify 90 the user of the job destination. However, when the job is sentto the default printer 88, as expected by the user, notification 90 isoptional.

[0046] When the default printer is not available 86, these embodimentscheck the status of other printing devices to determine if any of themare available 92. If another printing device is available, the printtask is “rolled over” 94 or directed to that available printing deviceinstead of the default device. When this occurs, the user may benotified 96 of the new destination of the print task. If no printingdevices are available 92, other options may be executed. In someembodiments, the print task may be cancelled 98 and the user may benotified 100 of the unsuccessful attempt. In other embodiments, shown asalternative paths in FIG. 6, the print processor may wait 102 for aperiod of time, suspend until re-initiated by the user or wait for someother event to occur after which it may again check the status ofprinting devices 84. If the default device or another device becomesavailable during the wait period, the print task may be directed to thatdevice as if it were available before the wait period.

[0047] Other embodiments of the present invention, illustrateddiagrammatically in FIG. 7, may consider printing devices in a busystate. In these embodiments, a default device is generally selected 110at some time prior to initiating a print task 112. After print taskinitiation 112, a print task follows typical print processes until it isrouted to a print processor. When the task arrives at the printprocessor, the print processor checks the status 114 of printing devicesand determines whether the devices are available or busy. A status ofavailable or busy may depend on several parameters, but typically, anavailable printing device will be idle with no print tasks in its queueor memory and a busy printing device will be printing with or withoutprint tasks in its queue. The actual conditions defining a busy oravailable status may vary according to a user's needs. Variables such asthe number of tasks in a print queue, task size, estimated time tocompletion and other factors may be used to determine a device status asavailable, busy or other states.

[0048] Once the status of devices has been determined, the printprocessor determines whether the default printing device is available114. If the default device is available, the print processor will directthe print task to the default device 118. Optional notification to theuser of the destination of the print task 120 may be performed. If thedefault device is not available, the print processor may determine ifother printing devices are available 122. If another printing device isavailable, the print processor may direct the task 124 to the availabledevice and notify the user of the task destination 126. Alternatively,the print processor may wait for a period of time to allow the defaultdevice to become available or prompt the user for input 138.

[0049] When no printing devices are available 122, these embodiments maywait for a period of time and re-check device status or prompt a userfor input 138. Embodiments may also determine if the unavailableprinting devices are simply in a busy state 128. If a printing device issimply busy, the print job may be rolled over 130 to the busy printingdevice and the user is notified 132 of the final destination of theprint job. When no printing devices are available and none are busy, theprint job may be cancelled 134 and the user notified 136 that noprinting devices are currently responding. Alternatively to taskcancellation 134, some embodiments may wait for a period of time 138 andre-check the status of the printing devices. After a wait period theseembodiments may re-evaluate device status and direct the print task toany available or busy devices which have changed status during the waitperiod as displayed in FIG. 7. Other embodiments may prompt for userinput 138 to determine whether a wait period is desired, to determinethe duration of a wait period, to offer task cancellation options orsome other user choice. A wait period of user prompt 138 may beactivated from any step in the device status detection and taskdirection processes. For example, and not by way of limitation, a waitperiod or user prompt 138 may be activated when default device is notavailable 116, when another device is not available 122, when a busydevice cannot be found 128 or at some other point in these processes.

[0050] Some embodiments of the present invention are adapted for use incluster printing environments as shown in FIG. 8. In these embodiments,a user may select one or more preferred printing devices 140 from a poolof printing devices in communication with the user's computing device.Preferred printing devices may be ranked in an order of preference, haveno preference or a combination of ranked and non-ranked devices. Thesedevices may also be ranked in multiple ways according to criteria suchas speed, availability, location or other criteria. In some embodiments,a group of printers may be selected for cluster printing tasks as apreferred set of printers while one of these printers or another printermay be designated as a preferred printer for a single-printer task.

[0051] Once printers have been selected 140, a print task is initiated142 in a typical manner as described above. When cluster printingoptions are desired, a cluster-enabled print processor (CPP) 143 of someembodiments of the present invention may modify a print task for clusterprinting. Alternatively, a multiple-printer task configured without aCPP may be directed to a status-detecting print processor (SDPP) printprocessor.

[0052] When a SDPP of embodiments of the present invention receives aprint task or set of print tasks, the SDPP may check the status 144 ofprinting devices in communication with it. When, in this example, amultiple-printer task or cluster print task is sent to the SDPP, theSDPP will check whether all printers in the preferred group areavailable 146. If all the preferred printers are available 146, the SDPPwill direct the print tasks or modified print tasks to the preferredprinters 148 and notify the user of the task destinations 150.

[0053] If all the preferred printers are not available 146, the SDPP mayprompt for user input or wait for a period of time for printers tobecome available 165. Alternatively, the SDPP may check to see if otherprinters are available 152. If a sufficient number of other printers areavailable to make up for the lack of preferred printers, a new group 154may be formed to which the print tasks may be directed 156 by the SDPP.When print tasks are redirected in this manner, a user may be notified158 of the final destination of each print task or modified print task.

[0054] When a sufficient number of printers are not available to matchthe number in the preferred group 152, a SDPP may prompt for user inputor wait for printers to become available 165. Alternatively, a SDPP maycheck for busy printers 160. These may be printers which are printing atthe time of the status check, printers which will be available within agiven time period, printers which have only a given number of jobs intheir queue or printers in some other situation that would indicate theywill soon be available. Many algorythms may be used to determine a busystatus. As a non-limiting example, the maximum time to complete thecurrent load or queue combined with a printer's estimated time to startor load a task. If enough busy printers are found such that whencombined with all available printers they are as numerous as thepreferred printer group, a new group will be formed 162 with the busyand available printers and the SDPP will direct the print tasks to thisgroup 164. A user may again be notified 166 of the final destination ofthe print tasks.

[0055] If a sufficient number of available and busy printers cannot befound to make up a group equal in size to the initial preferred printergroup 160, the initial print task may be reconfigured as a cluster printtask that requires fewer printers, such as the number of availableprinters 168 or the number of available and busy printers combined. Whenthis reconfiguration can be performed, a new smaller group of printersis formed 170 and the SDPP directs the new modified print tasks toprinters in this new printer group 172. Again, users may be notified ofthe destination and configuration of the final modified print tasks 174.Alternative to print task reconfiguration 168, a SDPP may prompt foruser input or wait for printer status changes 165.

[0056] When a sufficient number of printers is simply not available orotherwise unusable, a print task may be cancelled 176 and the usernotified 178 of the cancellation and printers' status. Alternatively oradditionally, a wait period or user prompt 165 may be added to theseprocesses. A wait period or user prompt may be activated from any pointin these processes in order to allow user input to decision-makingprocesses and to allow devices to become available or otherwise changestatus when a current situation is unacceptable. After a wait period,the initial task or tasks may be re-initialized and printer statuschecking may begin anew as in some above-described embodiments. A usermay also select task cancellation from a user prompt.

[0057] When the number of printers in a network is large and theprinters are geographically diverse, a user may want to limit theprinters accessed by the SDPP to one or more select groups. Otherreasons may also motivate a user to limit accessible printers. Someembodiments of the present invention may accommodate these needs. Insome embodiments, illustrated in FIG. 9, a user may select a preferredgroup of printers 180 to which print tasks will be sent when they areavailable. Further, a user may select a group of backup printers 182which may be substituted into the preferred group when printers in thatgroup are not available, busy or otherwise unusable. Preferred andbackup printing devices may be ranked in order of preference in someembodiments. Optionally, a user may designate printing devices whichshould not be used as preferred 180 or backup 182 printing devicesthereby eliminating them from consideration by the SDPP. These selectionprocesses allow a user to eliminate printing devices from considerationwhich are not acceptable to a user by virtue of their location,capability or some other reason.

[0058] Once preferred and backup printers have been selected, a user mayinitiate a cluster printing task or multiple-printer task 184 which issent to a SDPP of embodiments of the present invention. This may be donethrough a CPP or my other means. In some embodiments, a CPP may beintegrated with a SDPP to perform both cluster-enabling functions andstatus detection functions. The SDPP, upon receiving task or group oftasks, checks the status of printers in the preferred and backup printergroups 186. If all printers in the preferred group are available 188,the SDPP will direct the print tasks to the preferred group 190 andnotify the user of the tasks' destinations.

[0059] When some of the preferred printers are not available 188, theSDPP may determine whether backup printers are available 194. If backupprinters are available 194, they may be added to the preferred printerswhich are available to form a new group of available printers 196. TheSDPP will then direct the print tasks to this new printer group 198 andnotify the user of the destination of the print tasks 200. In analternative embodiment, a user prompt or wait period may be activatedwhen preferred printers are not available 205.

[0060] When enough backup printers are not available to fill out thepreferred group 194, a SDPP may prompt for user input or wait for achange in printer status 205. Alternatively, the SDPP may add any busyprinters in the preferred group 202 until the number of printers equalsthe number of preferred printers or the number of printers required forthe particular task or tasks. If the addition of busy printers to agroup creates a group of sufficient size, a new group is formed 204 andthe SDPP may direct the print task or tasks to this new group 206. As inother embodiments, a user may be notified of task destinations andmodifications 208.

[0061] If a sufficient number of available or busy printers cannot befound 202, a task may be cancelled 210, and the user notified of thecancellation 212. Alternatively, a SDPP may prompt for user input orenter a wait period 205 and restart the status checking process after aperiod of time. As an additional alternative to cancellation 210, theSDPP may reconfigure a task or tasks for output on a smaller number ofprinters as described in relation to FIG. 8.

[0062] As in some above-described embodiments, a wait period or userprompt 205 may be utilized in these embodiments an many others to allowdevices to become available or otherwise change status or to solicituser input at different points in these processes. Once status changesare detected or user input is accepted 205, embodiments of the presentinvention may reenter the steps illustrated in these flowcharts andequivalents at many points 84, 86, 92, 98, 114, 116, 122, 128, 134, 144,146, 152, 160, 168, 176, 186, 188, 194, 202 or 210 in the process.

[0063] The methods and systems shown in FIGS. 1-9 are illustrative ofexemplary embodiments of the present invention. Other embodiments may bederived through omission and addition of the illustrated steps and theirequivalents.

[0064] The present invention may be embodied in other specific formswithout departing from its spirit or essential characteristics. Thedescribed embodiments are to be considered in all respects only asillustrative and not restrictive. The scope of the invention is,therefore, indicated by the appended claims rather than by the foregoingdescription. All changes which come within the meaning and range ofequivalency of the claims are to be embraced within their scope.

1. A method for detecting the status of printers on a network using aprint processor, said method comprising the acts of: sending a signal toa print processor; and detecting the status of printers on a networkfrom said print processor to determine the availability of saidprinters.
 2. The method of claim 1 wherein said signal is a print task.3. The method of claim 1 wherein said detecting comprises obtainingnetwork print queue information.
 4. The method of claim 1 wherein saiddetecting comprises bidirectional communication between a printprocessor, a port manager and a printing device.
 5. The method of claim1 wherein said detecting comprises accessing data from a ManagementInformation Base (MIB).
 6. The method of claim 1 wherein said detectingcomprises communication with a printing device using a protocol selectedfrom the group consisting of Simple Network Management Protocol (SNMP),Remote Management (RMON) and Internet Printing Protocol (IPP).
 7. Themethod of claim 1 wherein said detecting comprises the use of anApplication Program Interface (API) call.
 8. A method of improving theprobability of successful print task completion using a status detectingprint processor, said method comprising: sending a print task to a printprocessor; detecting, from said print processor, the status of aplurality of printing devices; and directing said print task to anavailable printing device among said plurality of printing devices. 9.The method of claim 8 wherein said status of a plurality of printingdevices is presented to a user for selection of one or more availabledevices and said directing directs said print task to a device selectedby said user.
 10. The method of claim 8 wherein a default printingdevice is selected by a user prior to said detecting and said directingdirects said print task to said default device when said default deviceis available.
 11. The method of claim 8 wherein said print processor mayalso modify a print task to enable cluster printing functions.
 12. Themethod of claim 11 wherein said modifying said cluster printingfunctions comprise job splitting.
 13. The method of claim 11 whereinsaid modifying said cluster printing functions comprise copy splitting.14. The method of claim 11 wherein said detecting determines a number ofavailable printing devices and said modifying divides said initial printtask into a number of modified print tasks equal to said number ofavailable printing devices.
 15. A method for improving printing systemcapability and performance without addition of hardware or modificationof application software, said method comprising: removing anon-status-detecting print processor (NPP) from a printing system; andreplacing said NPP with a status-detecting print processor (SDPP). 16.The method of claim 15 wherein said SDPP is also cluster enabling.
 17. Acomputer readable medium comprising instructions for performingfunctions within a print processor, said instructions comprising theacts of: interpreting print task data; and detecting the status ofprinting devices.
 18. The computer readable medium of claim 17 furthercomprising instructions for the act of redirecting a print task from itsoriginal destination to at least one other destination.
 19. A computerdata signal embodied in an electronic transmission, said signal havingthe function of detecting printing device status with a print processor,said signal comprising instructions for: interpreting print task data;and detecting the status of printing devices.
 20. A print processorcomprising: instructions for interpreting print task data; andinstructions for detecting the status of printing devices.
 21. A methodof printing using a status detecting print processor, said methodcomprising: selecting a preferred printer group; modifying said printtask to enable cluster printing thereby creating a plurality of modifiedprint tasks; detecting, from said print processor, the status of aplurality of printing devices comprising said preferred printer group;directing said modified print tasks to said preferred printer group whenall of the printers within said preferred printer group are available;and forming a second group of printers comprising the available printerswithin said preferred group and other available printers and sendingsaid modified tasks to said second group when said second groupcomprises a sufficient number of printers to print said modified printtasks.
 22. The method of claim 21 further comprising selecting a groupof backup printers from which said other available printers may bechosen.
 23. The method of claim 21 further comprising reconfiguring saidmodified print tasks to require fewer printers when a sufficient numberof available printers cannot be found.
 24. The method of claim 21further comprising forming a third group of printers comprising anyavailable printers from said preferred group, any other availableprinters and any busy printers and directing said modified print tasksto said third group.
 25. The method of claim 21 further comprisingentering a wait period when a sufficient number of printers are notavailable and rechecking for available printers after said wait period.26. The method of claim 21 further comprising activating a user promptto solicit user input.